<?php

namespace app\common\model;

use think\Model;

/**
 * @property int $id ID
 * @property string $message_type 私信类型，类型列表见源码
 * @property int $to_id 接收者用户ID
 * @property User $to 接收者
 * @property int $from_id 发送者用户ID
 * @property User $from 发送者
 * @property string $content 私信内容
 * @property array $payload 功能性负荷，与私信类型配合
 * @property bool $is_read 是否读过
 * @property string $create_at 创建时间
 * @property string $update_at 更新时间
 */
class PrivateMessage extends Model
{
    // 数据表名
    protected $table = 'private_messages';
    // 主键
    protected $pk = 'id';
    // 保存时自动补完
    protected $auto = [];
    // 新增时自动补完
    protected $insert = [];
    // 更新时自动补完
    protected $update = [];
    // 创建时间字段
    protected $createTime = 'create_at';
    // 更新时间字段
    protected $updateTime = 'update_at';
    // 是否需要自动写入时间戳
    protected $autoWriteTimestamp = true;
    // 类型声明
    protected $type = [
        'id'           => 'integer',
        'message_type' => 'string',
        'to_id'        => 'integer',
        'from_id'      => 'integer',
        'content'      => 'string',
        // 'payload'      => 'json',
        'is_read'    => 'boolean',
        'create_at'    => 'datetime',
        'update_at'    => 'datetime',
    ];
    // JSON数据表字段
    protected $json = ['payload'];
    // JSON数据取出是否需要转换为数组
    protected $jsonAssoc = true;

    /**
     * 定义数据类型属性to
     */
    public function to()
    {
        // 当前模型的arg[2]字段=arg[1]模型的主键
        return $this->belongsTo('\app\common\model\User', 'to_id');
    }

    /**
     * 定义数据类型属性from
     */
    public function from()
    {
        // 当前模型的arg[2]字段=arg[1]模型的主键
        return $this->belongsTo('\app\common\model\User', 'from_id');
    }
}
